package com.gitee.feizns.itrip.personal.utils.service;

import com.gitee.feizns.itrip.personal.beans.dto.Token;
import com.gitee.feizns.itrip.personal.beans.pojo.User;

/**
 * @author feizns
 * @since 2019/1/8 0008
 */
public interface TokenService {

    /**
     * token的请求头键
     */
    String TOKEN_HEADER_KEY = "token";

    /**
     * token 默认有效时长
     */
    int DEFAULT_TOKEN_VALID_TIME = (60 * 60 * 1000) >> 1;      //2小时

    /**
     * 生成token
     * @param user
     * @return
     */
    Token generatorToken(User user);

    /**
     * 验证token
     * @param token
     * @return 无效token 返回空
     */
    Token verification(String token);

    /**
     * 删除token
     * @param token
     */
    void deleteToken(Token token);

    /**
     * 解析token并获取用户信息
     * @param token
     * @return
     */
    default User getUser(Token token) {
        return getUser(token.getToken());
    }

    /**
     * 解析token并获取用户信息
     * @param token
     * @return
     */
    User getUser(String token);

}
